#pragma once

#define MEM_SIZE (400000000)

class Vector
{
protected:
  POINT   m_p1;
  POINT   m_p2;

  POINT   m_middle;

  double   m_a;
  double   m_b;

  double   m_lenght;
  
  double  m_product;
  double  m_normscalar;
  double  m_anglecommon;
  double  m_angleinterior;

  POINTF   m_normalizevect;

  POINT    m_sumvector;

public:
  Vector();
  Vector(const POINT &, const POINT &);
  ~Vector();
  void SetVector(const POINT &, const POINT &);
  int operator * (Vector &);
  double Length();
  virtual bool CheckCollision(const Vector &, bool bAllpoints = true);
  virtual const POINT & GetCenterPoint();
  virtual double GetVectorAngleCommonBegin(Vector &);
  virtual double GetFollowVectorAngle(Vector &, bool );  //calculate the angle for vector in figure, the bool informs if the vectors are counter clockwise (true)
  virtual double  GetProduct(Vector &);
                                                              //ordered to get interior angle
protected:
  virtual void CalculateParameters();
  virtual void CalculateNormalVectorProduct(const Vector &);
  virtual void CalculateNormalizeScalar(const Vector &);
  virtual void NormalizeVector();
  virtual void AddVector(const Vector &);
  
};


